feof関数は、ファイルポインタで示されるストリームのEOF(end of file)の状態を調べます。
#include <stdio.h>
int feof(FILE *stream);
*streamはfopen関数で取得した、ファイルポインタを指定します。
戻り値として、EOFであれば0以外の値を返します。
入力関数の多くはEOF(end of file)あるいは、エラーを検出したらEOF値を返しますので、EOFなのかエラーなのか分かりません。そのような場合に、feof関数でEOFの状態か否かを調べることができます。
プログラム 例
#include <stdio.h>
int main(void)
{
FILE *fp;
int in_data;
if ((fp = fopen('temp.txt', 'r')) != NULL) {
while((in_data = fgetc(fp)) != EOF) {
putchar(in_data);
}
if (feof(fp) != 0) {
printf('正常に入力しました\n');
}
else {
printf('入力エラーです\n');
}
fclose(fp);
}
else {
printf('ファイルのオープンに失敗しました\n');
}
return 0;
}
例の実行結果
$ cat temp.txt Hello World!!. $ $ ./feof.exe Hello World!!. 正常に入力しました $